{$CLEO .cs}
{$USE CLEO+}
{$USE newOpcodes}
{$USE Audio}
{$USE ini}

0000: NOP

script_name "WD Other"

// By ArtemQa146

const
    molotov_r = 31@
    progress = 30@
    current_gun = 28@
    render_rocket_s = 29@
    render_rocket_r = 27@
    render_sniper_s = 26@
    render_sniper_r = 25@
    molotov_b1 = 24@
    molotov_b2 = 23@
    soundqa = 22@
    cuntgun_s = 21@
    cuntgun_o = 20@
    cuntgun_X = 19@
    cuntgun_Y = 18@
    cuntgun_Z = 17@
    mobile_obj = 16@
    mobile_r1 = 15@
    mobile_r2 = 14@
end

if
    0AA2: 31@ = load_dynamic_library "CLEO+.cleo"
then
    if
        0AA4: 30@ = get_dynamic_library_procedure "GetCleoPlusVersion" library 31@
    then
        0AA7: call_function_return 30@ num_params 0 pop 0 29@
        if
            not 29@ >= 0x1020000
        then
            0AD1: show_formatted_text_highpriority "Cleo+ 1.2.0 (or higher) version is required, the Weapon Details mod is disabled" time 15000
            0AA3: free_dynamic_library 31@
            0A93: terminate_this_custom_script
        end
        0AA3: free_dynamic_library 31@
    end
else
    0AD1: show_formatted_text_highpriority "Cleo+ 1.2.0 (or higher) version is required, the Weapon Details mod is disabled" time 15000
    0AA3: free_dynamic_library 31@
    0A93: terminate_this_custom_script
end

if
    0E2D: is_game_first_start
then
    0F00: load_special_model_dff "rocketla\Rocketla_s" txd "rocketla\Rocketla" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "Rocketla_s"
    0F00: load_special_model_dff "rocketla\Rocketla_r" txd "rocketla\Rocketla" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "Rocketla_r"
    0F00: load_special_model_dff "sniper\sniper_s" txd "sniper\sniper" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "sniper_s"
    0F00: load_special_model_dff "sniper\sniper_r" txd "sniper\sniper" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "sniper_r"
    0F00: load_special_model_dff "molotov\molotov_b1" txd "molotov\molotov" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "molotov_b1"
    0F00: load_special_model_dff "molotov\molotov_b2" txd "molotov\molotov" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "molotov_b2"
    0F00: load_special_model_dff "cuntgun\cuntgun_S" txd "cuntgun\cuntgun" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "Cuntgun_s"
    0F00: load_special_model_dff "cuntgun\cuntgun_O" txd "cuntgun\cuntgun" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "Cuntgun_O"
    0F00: load_special_model_dff "cellphone\cellphone_r1" txd "cellphone\cellphone" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "cellphone_r1"
    0F00: load_special_model_dff "cellphone\cellphone_r2" txd "cellphone\cellphone" store_to 0@
    0AF1: write_int 0@ to_ini_file "cleo\LoadModels.ini" section "Models" key "cellphone_r2"
end

repeat
wait 0
04ED: load_animation  "WeaponDetails"
until 04EE:   animation "WeaponDetails" loaded

repeat
wait 0
until player.Defined(0)

0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Rocketla_s"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 0 0 0 rotation 0 0 0 scale render_rocket_s // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors
0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Rocketla_r"
0F02:  $PLAYER_ACTOR special_model 0@ bone 34 offset 0 0 0 rotation 0 0 0 scale render_rocket_r // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Sniper_s"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 0 0 0 rotation 0 0 0 scale render_sniper_s // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors
0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Sniper_r"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 0 0 0 rotation 0 0 0 scale render_sniper_r // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Cuntgun_s"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 0 0 0 rotation 0 0 0 scale cuntgun_s // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0AF2: cuntgun_X = get_float_from_ini_file "cleo\cuntgun.ini" section "settings" key "Clip X"
0AF2: cuntgun_Y = get_float_from_ini_file "cleo\cuntgun.ini" section "settings" key "Clip Y"
0AF2: cuntgun_Z = get_float_from_ini_file "cleo\cuntgun.ini" section "settings" key "Clip Z"
0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "Cuntgun_o"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset cuntgun_X cuntgun_Y cuntgun_Z rotation 0 0 0 scale cuntgun_o // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "cellphone_r1"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 0 0 0 rotation 0 0 0 scale mobile_r1 // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0AF2: 1@ = get_float_from_ini_file "cleo\cellphone.ini" section "settings" key "Clip X"
0AF2: 2@ = get_float_from_ini_file "cleo\cellphone.ini" section "settings" key "Clip Y"
0AF2: 3@ = get_float_from_ini_file "cleo\cellphone.ini" section "settings" key "Clip Z"
0AF0: 0@ = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "cellphone_r2"
0F02:  $PLAYER_ACTOR special_model 0@ bone 24 offset 1@ 2@ 3@ rotation 0 0 0 scale mobile_r2 // bone 34 left hand, 24 right hand, 9 had, 3 tors, 4 upper tors

0E31: set_render_object_visible render_rocket_s 0
0E31: set_render_object_visible render_rocket_r 0
0E31: set_render_object_visible render_sniper_s 0
0E31: set_render_object_visible render_sniper_r 0
0E31: set_render_object_visible cuntgun_o 0
0E31: set_render_object_visible cuntgun_s 0
0E31: set_render_object_visible mobile_r1 0
0E31: set_render_object_visible mobile_r2 0

model.Load(344)
038B: load_requested_models
0E2E: create_render_object_to_char_bone $PLAYER_ACTOR model 344 bone 24 offset 0.0 0.0 0.0 rotation 0.0 0.0 0.0 store_to molotov_r
model.Destroy(344)
0E31: set_render_object_visible molotov_r 0

0AF0: molotov_b1 = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "molotov_b1"
0AF0: molotov_b2 = read_int_from_ini_file "cleo\LoadModels.ini" section "Models" key "molotov_b2"

soundqa = -1

while true
wait 0
    if
        player.Defined(0)
    then
        if
            actor.Driving($PLAYER_ACTOR)
        then
            continue
        end
        
        // 
        if
            02D8:   actor $PLAYER_ACTOR current_weapon == 18
        then
            if
                timera < 1500
            then
                0E31: set_render_object_visible molotov_r 1
                0A96: 0@ = ped $PLAYER_ACTOR struct
                0AA6: call_method 0x5E3990 struct 0@ num_params 1 pop 0 344 //    
                progress = 0
                0470: current_gun = actor $PLAYER_ACTOR current_weapon
                
                repeat
                wait 0
                if
                    02D8:   actor $PLAYER_ACTOR current_weapon == current_gun
                then
                
                    if and
                        progress == 0
                        timera > 1000
                        current_gun == 18
                        not is_char_on_fire $PLAYER_ACTOR
                    then
                        0A1A: actor $PLAYER_ACTOR perform_walk_animation "bomberqa" IFP "WeaponDetails" framedelta  2.5 loopA 0 lockX 0 lockY 0 lockF 0 600 ms // versionC
                        progress = 1
                    end

                    if
                        timera > 1500
                    then
                        01B9: set_actor $PLAYER_ACTOR armed_weapon_to 0
                        wait 0
                        01B9: set_actor $PLAYER_ACTOR armed_weapon_to current_gun
                        break
                    end
                else
                    break
                end
                until not player.Defined(0)
                0E31: set_render_object_visible molotov_r 0
                timera = 5000
            end
            
            7@ = 0
            while 0EA9: get_any_object_no_save_recursive 7@ progress_to 7@ object_to 0@
                if and
                    09CC:   object 0@ model_is 344
                    04DA:   has_object 0@ collided
                    8179:   not actor $PLAYER_ACTOR colliding_with_object 0@
                then
                    0400: store_coords_to 1@ 2@ 3@ from_object 0@ with_offset -3.0 -3.0 -3.0
                    0400: store_coords_to 4@ 5@ 6@ from_object 0@ with_offset 3.0 3.0 3.0
                    0400: store_coords_to 7@ 8@ 9@ from_object 0@ with_offset 0.0 0.0 0.0
                    timerb = 0
                    
                    repeat
                    wait 0
                    if
                        0356:   explosion_type 1 in_cube_cornerA 1@ 2@ 3@ cornerB 4@ 5@ 6@
                    then
                        model.Load(344)
                        038B: load_requested_models
                        0E01: create_object_no_save 344 at 7@ 8@ 9@ offset 0 ground 1 to 0@
                        08D2: object 0@ scale_model 0.0
                        0382: set_object 0@ collision_detection 0
                        0208: 1@ = random_float_in_ranges 0.0 360.0
                        0177: set_object 0@ Z_angle_to 1@
                        0209: 1@ = random_int_in_ranges 1 3
                        if 1@ == 1
                        then 0F04: create_render_object_to_object_from_special 0@ special_model molotov_b1 offset 0 0 0.03 rotation 0 0 0 store_to 1@
                        else 0F04: create_render_object_to_object_from_special 0@ special_model molotov_b2 offset 0 0 0.03 rotation 0 0 0 store_to 1@
                        end
                        model.Destroy(344)
                        wait 300
                        01C4: remove_references_to_object 0@ // This object will now disappear when the player looks away
                        break
                    end
                    
                    until timerb > 500
                    break
                end
            end
        else
            timera = 0
        end
        
        
        // 
        if
            02D8:   actor $PLAYER_ACTOR current_weapon == 43
        then
            0EFF: get_char_simplest_active_task $PLAYER_ACTOR id_to 1@ pointer_to 2@
            if and
                8597:   not actor $PLAYER_ACTOR crouching
                03EE:   player $PLAYER_CHAR controllable
                1@ == 0
            then
                if and
                    8611:   not actor $PLAYER_ACTOR performing_animation "IDLE_tired"
                    8611:   not actor $PLAYER_ACTOR performing_animation "camstndqa"
                    03EE:   player $PLAYER_CHAR controllable
                    not is_char_on_fire $PLAYER_ACTOR
                then
                    0A1A: actor $PLAYER_ACTOR perform_walk_animation "camstndqa" IFP "WeaponDetails" framedelta  4.5 loopA 0 lockX 0 lockY 0 lockF 0 -1 ms // versionC
                    wait 100
                    continue
                else
                    if
                        0611:   actor $PLAYER_ACTOR performing_animation "camstndqa"
                    then
                        0614: set_actor $PLAYER_ACTOR animation "camstndqa" progress_to 0.95 // 0.0 to 1.0
                    end
                end
            end
        end
        
        
        // 
        if or
            02D8:   actor $PLAYER_ACTOR current_weapon == 35
            02D8:   actor $PLAYER_ACTOR current_weapon == 36
        then
            0470: current_gun = actor $PLAYER_ACTOR current_weapon
            041A: 2@ = actor $PLAYER_ACTOR weapon current_gun ammo
            progress = 0

            repeat
            wait 0
            if or
                02D8:   actor $PLAYER_ACTOR current_weapon == 35
                02D8:   actor $PLAYER_ACTOR current_weapon == 36
            then
                0470: 1@ = actor $PLAYER_ACTOR current_weapon
                if
                    803B:   not 1@ == current_gun  // (int)
                then
                    break
                end

                if 02D8:   actor $PLAYER_ACTOR current_weapon == 35
                then 041A: 1@ = actor $PLAYER_ACTOR weapon 35 ammo
                else 041A: 1@ = actor $PLAYER_ACTOR weapon 36 ammo
                end

                if and
                    progress == 0
                    001D:   2@ > 1@  // (int)
                then
                    if
                        02D8:   actor $PLAYER_ACTOR current_weapon == 35
                    then
                        0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
                        08C3: clear 1@ bit 12
                        0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
                    end
                    if 02D8:   actor $PLAYER_ACTOR current_weapon == 35
                    then 0E31: set_render_object_visible render_rocket_s 1
                    end
                    progress = 1
                    timera = 0
                end
                
                if 02D8:   actor $PLAYER_ACTOR current_weapon == 35
                then 041A: 1@ = actor $PLAYER_ACTOR weapon 35 ammo
                else 041A: 1@ = actor $PLAYER_ACTOR weapon 36 ammo
                end
                
                if and
                    03EE:   player $PLAYER_CHAR controllable
                    001D:   2@ > 1@  // (int)
                    8611:   not actor $PLAYER_ACTOR performing_animation "rocketqa"
                    progress == 1
                    1@ > 0
                    not is_char_on_fire $PLAYER_ACTOR
                then
                    0A1A: actor $PLAYER_ACTOR perform_walk_animation "rocketqa" IFP "WeaponDetails" framedelta  4.5 loopA 0 lockX 0 lockY 0 lockF 0 -1 ms // versionC
                    if 02D8:   actor $PLAYER_ACTOR current_weapon == 35
                    then 041A: 2@ = actor $PLAYER_ACTOR weapon 35 ammo
                    else 041A: 2@ = actor $PLAYER_ACTOR weapon 36 ammo
                    end
                    progress = 2
                    timera = 0
                    0E31: set_render_object_visible render_rocket_r 1
                    wait 100
                    continue
                end

                if
                    progress == 2
                then
                    if
                        0611:   actor $PLAYER_ACTOR performing_animation "rocketqa"
                    then
                        0613: 1@ = actor $PLAYER_ACTOR animation "rocketqa" time
                        if
                            1@ > 0.8
                        then
                            break
                        end
                    else
                        break
                    end
                end

                0AAA: 1@ = get_script_struct_named "foguete"
                if and
                    02D8:   actor $PLAYER_ACTOR current_weapon == 35
                    progress == 1
                    1@ > 0
                then
                    if and
                        timera > 700
                        0E8D: is_any_fire_button_pressed 0
                    then
                        gosub @Rocket_launcher_Third
                        wait 100
                        timera = 0
                        continue
                    end
                end
                
                if and
                    timera > 5000
                    progress > 1
                then
                    break
                end
            else
                break
            end
            until not player.Defined(0)
            0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
            08BD: set 1@ bit 12
            0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
            0E31: set_render_object_visible render_rocket_s 0
            0E31: set_render_object_visible render_rocket_r 0
            timera = 0
        end
        
        
        // 
        if
            02D8:   actor $PLAYER_ACTOR current_weapon == 34
        then
            041A: 2@ = actor $PLAYER_ACTOR weapon 34 ammo
            progress = 0

            repeat
            wait 0
            if
                02D8:   actor $PLAYER_ACTOR current_weapon == 34
            then

                041A: 1@ = actor $PLAYER_ACTOR weapon 34 ammo
                if and
                    progress == 0
                    001D:   2@ > 1@  // (int)
                then
                    progress = 1
                end

                041A: 1@ = actor $PLAYER_ACTOR weapon 34 ammo
                if and
                    03EE:   player $PLAYER_CHAR controllable
                    001D:   2@ > 1@  // (int)
                    8611:   not actor $PLAYER_ACTOR performing_animation "sniperqa"
                    progress == 1
                    1@ > 0
                    not is_char_on_fire $PLAYER_ACTOR
                then
                    0A1A: actor $PLAYER_ACTOR perform_walk_animation "sniperqa" IFP "WeaponDetails" framedelta  100.5 loopA 0 lockX 0 lockY 0 lockF 0 -1 ms // versionC
                    041A: 2@ = actor $PLAYER_ACTOR weapon 34 ammo
                    progress = 2
                    timera = 0
                    0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
                    08C3: clear 1@ bit 12
                    0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
                    0E31: set_render_object_visible render_sniper_s 1
                    0E31: set_render_object_visible render_sniper_r 1
                    0E35: set_render_object_position render_sniper_r 0.0 0.0 0.0
                    wait 100
                    continue
                end

                if
                    progress == 2
                then
                    if
                        0611:   actor $PLAYER_ACTOR performing_animation "sniperqa"
                    then
                        0613: 1@ = actor $PLAYER_ACTOR animation "sniperqa" time
                        if and
                            1@ > 0.3
                            1@ < 0.7
                        then
                            2@ = 0.295
                            0087: 3@ = 1@ // (float)
                            0063: 3@ -= 2@  // (float)
                            3@ /= 7.0
                            3@ *= -1.0

                            2@ = 0.295
                            0087: 4@ = 1@ // (float)
                            0063: 4@ -= 2@  // (float)
                            4@ /= 50.0
                            4@ *= 1.0

                            2@ = 0.295
                            0087: 5@ = 1@ // (float)
                            0063: 5@ -= 2@  // (float)
                            5@ /= 50.0
                            5@ *= -1.0

                            0E35: set_render_object_position render_sniper_r 3@ 4@ 5@
                        else
                            0E35: set_render_object_position render_sniper_r 0.0 0.0 0.0
                        end
                        if
                            1@ > 0.8
                        then
                            break
                        end
                    else
                        break
                    end
                end
            else
                break
            end
            until not player.Defined(0)
            0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
            08BD: set 1@ bit 12
            0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
            0E31: set_render_object_visible render_sniper_s 0
            0E31: set_render_object_visible render_sniper_r 0
            timera = 0
        end
        
        // 
        if
            02D8:   actor $PLAYER_ACTOR current_weapon == 41
        then
            if and
                TIMERB < 2500
                timerb > 1500
            then
                get_char_weapon_clip $PLAYER_ACTOR store_to 1@
                if and
                    8611:   not actor $PLAYER_ACTOR performing_animation "spraycan_rel"
                    8597:   not actor $PLAYER_ACTOR crouching
                    03EE:   player $PLAYER_CHAR controllable
                    soundqa == -1
                    1@ > 0
                    not is_char_on_fire $PLAYER_ACTOR
                then
                    0A1A: actor $PLAYER_ACTOR perform_walk_animation "spraycan_rel" IFP "WeaponDetails" framedelta  2.0 loopA 0 lockX 0 lockY 0 lockF 0 -1 ms // versionC
                    0AC1: soundqa = load_audio_stream_with_3d_support "SQ/SPR1.mp3" // IF and SET
                    0AC4: link_3d_audio_stream soundqa to_actor $PLAYER_ACTOR
                    0ABC: set_audio_stream soundqa volume 0.3
                    0AAD: set_audio_stream soundqa state 1
                    wait 100
                    continue
                end
                timerb = 5000
            end
            if
                0E46: is_char_using_gun $PLAYER_ACTOR
            then
                
                repeat
                wait 0
                if
                    82D8:   not actor $PLAYER_ACTOR current_weapon == 41
                then
                    break
                end
                if
                    not  is_char_using_gun $PLAYER_ACTOR
                then
                    timerb = 800
                    break
                end
                until not player.Defined(0)
                
            end

        else
            timerb = 0
        end
        
        // Cuntgun
        if
            02D8:   actor $PLAYER_ACTOR current_weapon == 33
        then
            0E31: set_render_object_visible cuntgun_o 1
            0E31: set_render_object_visible cuntgun_s 1
            progress = 0
            041A: 4@ = actor $PLAYER_ACTOR weapon 33 ammo
            
            repeat
            wait 0
            if and
                not actor.Driving($PLAYER_ACTOR)
                02D8:   actor $PLAYER_ACTOR current_weapon == 33
            then
                0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
                08C3: clear 1@ bit 12
                0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
                0E36: set_render_object_rotation cuntgun_o 0 0 0
                
                041A: 1@ = actor $PLAYER_ACTOR weapon 34 ammo
                if and
                    progress == 0
                    001D:   4@ > 1@  // (int)
                then
                    progress = 1
                end

                041A: 1@ = actor $PLAYER_ACTOR weapon 33 ammo
                if and
                    03EE:   player $PLAYER_CHAR controllable
                    001D:   4@ > 1@  // (int)
                    8611:   not actor $PLAYER_ACTOR performing_animation "cuntgunqa"
                    progress == 1
                    1@ > 0
                    not is_char_on_fire $PLAYER_ACTOR
                then
                    0A1A: actor $PLAYER_ACTOR perform_walk_animation "cuntgunqa" IFP "WeaponDetails" framedelta  10.0 loopA 0 lockX 0 lockY 0 lockF 0 -1 ms // versionC
                    progress = 2
                    wait 100
                    continue
                end

                if
                    Actor.Animation($PLAYER_ACTOR) == "cuntgunqa"
                then
                    0613: 1@ = actor $PLAYER_ACTOR animation "cuntgunqa" time

                                if
                                    1@ <= 0.55
                                then
                                    1@ *= 100.0
                                    1@ += 30.0
                                    1@ *= -1.0
                                    if 1@ <= -100.0
                                    then 1@ = -100.0
                                    end
                                    if 1@ >= 0.0
                                    then 1@ = 0.0
                                    end
                                    0E36: set_render_object_rotation cuntgun_o 0 1@ 0
                                    
                                    if  1@ <= -100.0
                                    then continue
                                    end
                                    
                                    0613: 1@ = actor $PLAYER_ACTOR animation "cuntgunqa" time
                                    1@ /= 10.0
                                    1@ *= -1.0
                                    0E35: set_render_object_position cuntgun_s 1@ 0.0 0.0
                                    0087: 2@ = cuntgun_X // (float)
                                    1@ *= -1.0
                                    0063: 2@ -= 1@  // (float)
                                    0E35: set_render_object_position cuntgun_o 2@ cuntgun_Y cuntgun_Z
                                end
                                if
                                    1@ > 0.55
                                then
                                    3@ = 1.0
                                    0063: 3@ -= 1@  // (float)
                                    0087: 1@ = 3@ // (float)
                                    1@ *= 100.0
                                    
                                    if
                                        1@ > 25.0
                                    then

                                        1@ += 50.0
                                    else
                                        1@ *= 2.0
                                    end
                                    1@ *= -1.0
                                    if 1@ <= -100.0
                                    then 1@ = -100.0
                                    end
                                    if 1@ >= 0.0
                                    then 1@ = 0.0
                                    end
                                    0E36: set_render_object_rotation cuntgun_o 0 1@ 0
                                    
                                    if  1@ <= -100.0
                                    then continue
                                    end
                                    
                                    0613: 1@ = actor $PLAYER_ACTOR animation "cuntgunqa" time
                                    3@ = 1.0
                                    0063: 3@ -= 1@  // (float)
                                    0087: 1@ = 3@ // (float)
                                    1@ /= 10.0
                                    1@ *= -1.0
                                    0E35: set_render_object_position cuntgun_s 1@ 0.0 0.0
                                    0087: 2@ = cuntgun_X // (float)
                                    1@ *= -1.0
                                    0063: 2@ -= 1@  // (float)
                                    0E35: set_render_object_position cuntgun_o 2@ cuntgun_Y cuntgun_Z
                                end
                        else
                            0E35: set_render_object_position cuntgun_s 0.0 0.0 0.0
                            0E35: set_render_object_position cuntgun_o cuntgun_X cuntgun_Y cuntgun_Z
                            if
                                progress == 2
                            then
                                progress = 0
                                041A: 4@ = actor $PLAYER_ACTOR weapon 33 ammo
                            end
                            
                        end

            else
                break
            end
            until not player.Defined(0)
            0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
            08BD: set 1@ bit 12
            0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
            0E31: set_render_object_visible cuntgun_o 0
            0E31: set_render_object_visible cuntgun_s 0
            0E35: set_render_object_position cuntgun_s 0.0 0.0 0.0
            0E35: set_render_object_position cuntgun_o cuntgun_X cuntgun_Y cuntgun_Z
        end
        
        if
            Actor.Animation($PLAYER_ACTOR) == "phone_in"
        then
            0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
            08C3: clear 1@ bit 12
            0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
            0E36: set_render_object_rotation mobile_r2 155.0 5.0 0.0
            timera = 0
            
            repeat
            wait 0
            if
                Actor.Animation($PLAYER_ACTOR) == "phone_in"
            then
                0613: 2@ = actor $PLAYER_ACTOR animation "phone_in" time
                if
                    2@ > 0.32
                then
                    0E31: set_render_object_visible mobile_r1 1
                    0E31: set_render_object_visible mobile_r2 1
                end
                if
                    2@ > 0.65
                then
                    0E36: set_render_object_rotation mobile_r2 0.0 0.0 0.0
                end
            end
            if
                Actor.Animation($PLAYER_ACTOR) == "phone_out"
            then
                0613: 2@ = actor $PLAYER_ACTOR animation "phone_out" time
                if
                    2@ > 0.32
                then
                    0E36: set_render_object_rotation mobile_r2 155.0 5.0 0.0
                end
                if
                    2@ > 0.8
                then
                    break
                end
            end
            if
                timera > 1000
            then
                if and
                    not Actor.Animation($PLAYER_ACTOR) == "phone_in"
                    not Actor.Animation($PLAYER_ACTOR) == "phone_out"
                    not Actor.Animation($PLAYER_ACTOR) == "phone_talk"
                then
                    break
                end
            end
            until not player.Defined(0)
            0E36: set_render_object_rotation mobile_r2 0.0 0.0 0.0
            0E31: set_render_object_visible mobile_r1 0
            0E31: set_render_object_visible mobile_r2 0
            0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
            08BD: set 1@ bit 12
            0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
            
        end
        
        if
            not soundqa == -1
        then
            0AB9: get_audio_stream soundqa state_to 1@
            if or
                82D8:   not actor $PLAYER_ACTOR current_weapon == 41
                1@ == -1
                8611:   not actor $PLAYER_ACTOR performing_animation "spraycan_rel"
            then
                0AAE: remove_audio_stream soundqa
                soundqa = -1
            end
        end
        
    end
end

:Rocket_launcher_Third
0E31: set_render_object_visible render_sniper_s 0
0A8D: 1@ = read_memory 0xB7CDD0 size 4 virtual_protect 0
08BD: set 1@ bit 12
0A8C: write_memory 0xB7CDD0 size 4 value 1@ virtual_protect 0
progress = 0
timera = 0
041A: 2@ = actor $PLAYER_ACTOR weapon 35 ammo
return
